package myzd.domain.response;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import myzd.domain.enums.MedicalTitleList;

import java.util.Date;
import java.util.List;

/**
 * @author zks
 * @since 2017/10/19 9:55
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
public class DoctorDetailsDto {

  private Integer id;
  /**
   * 注册医生id
   */
  private Integer registerId;
  private String name;
  private String mobile;

  /**
   * 专业
   */
  private Integer majorId;
  /**
   * 临床职称
   */
  private MedicalTitleList medicalTitleList;
  /**
   * 学术职称 副教授(ASSOCIATE_PROFESSOR)教授(PROFESSOR)讲师(LECTURER)无(NONE)
   */
  private AcademicTitleList academicTitleList;
  private Integer hospitalId;
  private Boolean userVisible;
  private Boolean doctorVisible;
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date createdAt;
  @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  private Date modifiedAt;
  private Integer cityId;
  /**
   * 认证状态：未认证，待认证，已认证，认证失败
   */
  private CertifiedStatus certifiedStatus;
  /**
   * 签约状态（专家）：未签约，待签约，签约成功，签约失败
   */
  private SignedStatus signedStatus;
  /**
   * 医生来源
   */
  private SourceType sourceType;
  /**
   * 科室名称
   */
  private String departmentName;
  /**
   * 医生激活状态
   */
  private Boolean activatedState;
  /**
   * 医院科室分类ID
   */
  private Integer departmentCategoryId;
  /**
   * 是否为测试数据
   */
  private Boolean isTest;
  /**
   * 医生省份
   */
  private Integer provinceId;
  /**
   * 医生省份名称
   */
  private String provinceName;
  private String hospitalName;

  private List<DoctorDepartmentDetails> departmentDetailsList;
  private List<DoctorSpecialty> specialtyList;

  /**
   * 医生擅长
   */
  private String specialty;
  /**
   * 服务人ID
   */
  private String referrerId;
  /**
   * 服务人姓名
   */
  private String referrerName;
  /**
   * 服务人联系电话
   */
  private String referrerTel;

  /**
   * 医生专家服务类型列表
   */
  private List<DoctorServices> serviceTypeList;

  public enum AcademicTitleList {
    /**
     * 副教授                ASSOCIATE_PROFESSOR
     * 教授                  PROFESSOR
     * 讲师                  LECTURER
     * 其他                  NONE
     */
    ASSOCIATE_PROFESSOR,
    PROFESSOR,
    LECTURER,
    NONE
  }

  public enum CertifiedStatus {
    /**
     * 未认证               NOT_CERTIFIED
     * 待认证               CERTIFYING
     * 已认证				       CERTIFIED
     * 认证失败             FAILED_CERTIFIED
     */
    NOT_CERTIFIED,
    CERTIFYING,
    CERTIFIED,
    FAILED_CERTIFIED,
  }

  public enum SignedStatus {
    /**
     * 未签约               NOT_SIGNED
     * 待签约               SIGNING
     * 已签约				       SIGNED
     * 签约失败             FAILED_SIGNED
     */
    NOT_SIGNED,
    SIGNING,
    SIGNED,
    FAILED_SIGNED,
  }

  public enum SourceType {
    /**
     * 医生端
     */
    DOCTOR_SERVICE,
    /**
     * crm后台新增
     */
    CRM_SYSTEM
  }
}
